/* ----------------------------------------------------------------------------
* File: api_event_dispatcher.h
*
* Desc: Dispatcher for Skype API events
*
* Created: 30/07/2011, by Alexey Korshunov
* ---------------------------------------------------------------------------- */
#ifndef _API_EVENT_DISPATCHER_H_
#define _API_EVENT_DISPATCHER_H_

#include <memory>

#include "api_event_handler.h"
#include "attach_event_handler.h"

namespace SkypeProtection
{
	class APIEventDispatcher
	{
	public:
		virtual ~APIEventDispatcher()
		{
		}
	};

	struct APIEventDispatcherParams
	{
		APIEventDispatcherParams()
			: AttachHandler(NULL)
			, APIHandler(NULL)
			, dispatch_events(false)
			, registerAPI(false)
		{
		}

		AttachEventHandler* AttachHandler;
		APIEventHandler* APIHandler;
		bool dispatch_events;
		bool registerAPI;
	};

	std::auto_ptr<APIEventDispatcher> CreateAPIEventDispatcher(const APIEventDispatcherParams& params);
}

#endif // _API_EVENT_DISPATCHER_H_